import axios from "axios"
import { ElMessageBox } from 'element-plus'
import router from "@/router/index.js"
// 创建axios实例

let http = axios.create({
    //axios的基本地址
    baseURL: "/api",
    //超时设置
    timeout: 1000 * 15,
    //公共请求头
    headers: {
        "content-type": "application/json;chartset=utf8"
    },
    //携带凭据
    withCredentials: true
})

//请求拦截器

http.interceptors.request.use(config => {
    //authorization 是服务器要我们传递的固定字段
    let { token: authorization } = localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : {}
    //将token(authorization)携带给每个请求的请求头
    config.headers.authorization = authorization;

    return config
})

//响应拦截器

//作用1:可以拦截到每一个请求的响应结果,根据响应结果可以批量做出一些错误的交互提示

http.interceptors.response.use(config => {
    // console.log('--config', config)
    //如果state为false 说明服务器响应了 但是响应的是请求的错误信息
    if (!config.data.state) {
        //弹窗
        ElMessageBox.alert(config.data.msg, '错误', {
            confirmButtonText: '确认',
            type: 'error'
        })
        //登入状态过期了
        if (config.data.code === '10022') {
            //跳转回登入页
            //清除本地token
            router.push("/login");
            localStorage.removeItem("user")
        }


        return Promise.reject(config.data.msg)
    }
    return config.data
})

export default http